#函数function，是一块代码的集合，将代码块封装到函数中可以保证代码的整体性、复用性、可维护性。
#1、定义函数
#def 函数名():
    #函数的代码块
'''def jjcfb():
    for i in range (1,10):
        for j in range (1,i+1):
            print(f'{i}*{j}={i*j}',end='\t')
        print('')'''
#2、调用函数 函数名()
'''for i in range(2):
    jjcfb()'''
#函数必须先定义后调用，函数不调用默认不执行。
# def hello():
#     print('hello,pig')
#3.1、函数的形参和实参
# def f1(a,b):     #a和b都是函数f1的参数，定义函数时括号中写的参数是形参，它没有实际值
#     print(f'a={a},b={b}')
# f1(6,9)                #调用函数时括号中写的参数是实际参数，他必须有实际值
# f1('小帅','小美')       #在调用函数过程中，会将实参传递到形参中

#定义函数f2，任意输入四个数，求出最大值与最小值之差
# def f2(a,b,c,d):
#     c=max(a,b,c,d)-min(a,b,c,d)
#     print(c)
# f2(38,56,12,20)
#3.2、位置参数
    #实参的数量，必须与形参保持一致，不能多，也不能少
    #实参的位置，必须与形参保持一致
#f2(9,5,7)    #TypeError: f2() missing 1 required positional argument: 'd'
#f2(12,21,69,96,100)     #TypeError: f2() takes 4 positional arguments but 5 were given
'''f2(9.9,1.1,6.25,7.63)

#3.3、关键字参数。
def f1(a,b):
    print(f'a={a},b={b}')
f1('bbb','aaa')
f1(b='bbb',a='aaa')     #在传递实参时，利用形参的名字进行指定传参'''
# 3.4、默认值参数
def f3(a='小帅',b='小美'):
    print(f'a={a},b={b}')
f3()   #不传递实参，形参就取默认值
f3(a='小马')      #传递实参，形参取实参的值
f3(b='beauty')

#3.5、数量可变形参
    #在形参的名字前面添加*，可以让这个形参接受n多个实参
    #可变形参不能写在其他形参的前面
    #一个函数中只能有一个可变形参
    #形参可以只有一个形参且可以是可变形参
# def f3(a='小帅',b='小美',*c):
#     print(f'a={a},b={b},c={c}')
# f3(111,222)   #传递了2个实参，可变参数c是一个空元组
# f3(111,222,333)      #传递了3个实参，可变参数c是一个拥有一个元素的元组
# f3(111,222,333,444,555,666,777,888)     #传递n个实参，第一个给a，第二个给b，其余剩下的全给c组成元组

#6、函数的返回值return
#print(）是将括号中的内容打印到控制台，给人看的，程序本身不需要print
#None是空值的意思
#函数没有return，它的结果就是None
#函数有return，它的结果就是return后面的内容（与代码块中的操作，没有绝对关系）
# def f1(a,b):
#     s=a+b
# def f2(a,b):
#     s=a+b
#     return 'hehe'
# print(f1(6,9))
# print(f2(6,9))
#练习:有1个3位数n，它的3个位数之和是25，同时n+9的3个位数之和也是25，用代码找出这个数
#写一个函数，接受形参n，如果n的3个位数之和是9就返回True，否则返回False
# def f1(n):
#     a=int(str(n)[0])
#     b=int(str(n)[1])
#     c=int(str(n)[2])
#     if a+b+c==25:
#         return True
#     else:
#         return False
# #历100-999，如果f1(n)和f1(n+9)都返回True，说明n就是要找的数字
# for i in range(100,999+1):
#     if f1(i)==True and f1(i+9)==True:
#         print(i)
#定义一个函数f1，接受形参year和month，返回'year年month月有day天
#例如f1(2025,2)，返回值是'2025年2月有28天
#例如f1(2024,2)，返回值是'2025年2月有29天
# def f2(year,month):
#     day=[0,31,28,31,30,31,30,31,31,30,31,30,31]
#     if year%4==0 and year%100!=0 or year%400==0:
#         day[2]=29
#     return(f'{year}年{month}月有{day[month]}天')
#
# print(f2(2025,2))
# print(f2(2024,2))
# print(f2(1000,2))
# print(f2(2024,12))

# def pj(a,b):
#     return(a+' '+b)
# a=input('请输入字符串a：')
# b=input('请输入字符串b：')
# print(pj(a,b))
#编写一个函数，接受任意数量的整数参数，返回这些数字中的最大值
import math
def zd(*a):
    c=max(a)
    return c
print(zd(999,666,8987,111,2,3,12321))